/* 
  防抖函数：
    防抖函数是指在事件被触发n秒后再执行回调，如果在这n秒内事件又被触发，则重新计时。
*/

function debounce(fn, delay) {
  let timer = null;
  return function (...args) {
    // 如果再次触发，清除之前的定时器，重新计时
    if (timer) {
      clearTimeout(timer);
    }

    // 设计一个定时器， 在delay秒后执行fn函数
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay)
  }
}